package com.ruoyi.dm.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.exception.DataRepeatException;
import com.ruoyi.dm.domain.CollectEstimateVO;
import com.ruoyi.dm.domain.CollectQueryParam;
import com.ruoyi.dm.domain.po.SpaceEnvCollectRecordPO;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.Date;
import java.util.List;

public interface ISpaceEnvCollectRecordService extends IService<SpaceEnvCollectRecordPO> {
    /**
     * 检索
     *
     * @return
     */
    IPage query(CollectQueryParam queryParam);

    /**
     * 上传
     *
     * @param files
     * @param dataType
     * @return
     */
    List<String> uploadFile(MultipartFile[] files, String satellite, String dataType) throws DataRepeatException;

    /**
     * @param files
     * @param fileType
     * @param dataType
     * @throws DataRepeatException
     */
    void uploadFileByFile(File[] files, String fileType, String dataType) throws DataRepeatException;

    /**
     * 删除
     *
     * @param id
     * @return
     */
    boolean delFile(Long id);

    /**
     * 批量删除
     *
     * @param delParam
     * @return
     */
    boolean delBatch(Long[] delParam);
    /**
     * 下载
     * @param id
     * @return
     */
    String download(Long id);

    /**
     * 批量下载
     * @param downloadParam
     * @return 返回压缩包路径
     */
    String downloadBatch(Long[] downloadParam);

    /**
     * 解析
     *
     * @param filePath
     * @param method
     * @return 评估文件路径, 若有.
     */
    boolean analysis (Long filePath, String method);

    /**
     * 批量解析
     *
     * @param ids
     * @param method
     * @return
     */
    boolean analysisBatch(Long[] ids, String method);

    /**
     * 查看解析结果
     *
     * @param id
     * @return
     */
    CollectEstimateVO lookRes(Long id) throws Exception;

    /**
     * 解析详情
     * @param id
     * @return
     */
    String lookDetailRes(Long id) throws  Exception;

    int checkRepeat(String filename);

    /**
     * 预报 调用多种算法,并入库
     * @param fileType
     * @param dataType
     * @param fileDate
     */
    void forcast(String fileType, String dataType, Date fileDate);

    /*
        解析后的 文件保存 及 预报
     */
    void afterAnalysis(SpaceEnvCollectRecordPO po, String outFile) throws Exception;
}
